/*
 * @Author: your name
 * @Date: 2021-08-30 20:44:34
 * @LastEditTime: 2022-01-04 07:30:01
 * @LastEditors: Please set LastEditors
 * @Description: 密码设置项，用于通用的设置项。
 * @FilePath: \phone\src\input_password.h
 */
#ifndef INPUT_PASSWORD_H
#define INPUT_PASSWORD_H
#include "input_item.h"
#include <thread>
class InputPassword : public InputItem
{
public:
    InputPassword(std::unique_ptr<Widget> &page, std::string &value, Widget *editView, bool commonInputItem = true);
    virtual ~InputPassword();
    void SetEditString(Widget *widget, std::string value, unsigned int index) override;
    /**
     * @brief 
     * 原文字符恢复线程。
     */
    void TextItselfHandle();
    void TextItselfHandleIQ();
    std::string GetString() override;
    std::string GetValueByIndex(std::string value, unsigned int index) override;
private:
    /**
     * @brief 
     * 主要的窗口，该类依赖一个窗口，控制主窗口的某个区域。
     */
    std::unique_ptr<Widget> &primaryWidget;
    /**
     * @brief 
     * 线程运行标识
     */
    bool run;
    /**
     * @brief 
     * 候选字符持续显示时间，如果案件快速连续按下一次，持续时间重置一次
     */
    unsigned int showTime;
    std::mutex m_mutex;
};
#endif